﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Smart
{
    public partial class frmEvrakYonetimi : Form
    {
        public frmEvrakYonetimi()
        {
            InitializeComponent();
            this.Load += new EventHandler(frmEvrakYonetimi_Load);
        }

        void frmEvrakYonetimi_Load(object sender, EventArgs e)
        {
            cmbCinsi.Items.Add(new ComboItem() { Text = "Toptan Alış İrsaliyesi", Value = "ToptanAlisIrsaliyesi" });
            cmbCinsi.Items.Add(new ComboItem() { Text = "Perakende Alış İrsaliyesi", Value = "PerakendeAlisIrsaliyesi" });
            cmbCinsi.Items.Add(new ComboItem() { Text = "Toptan Alış İade İrsaliyesi", Value = "ToptanAlisIadeIrsaliyesi" });
            cmbCinsi.Items.Add(new ComboItem() { Text = "Perakende Alış İade İrsaliyesi", Value = "PerakendeAlisIadeIrsaliyesi" });
            cmbCinsi.Items.Add(new ComboItem() { Text = "Toptan Satış İrsaliyesi", Value = "ToptanSatisIrsaliyesi" });
            cmbCinsi.Items.Add(new ComboItem() { Text = "Perakende Satış İrsaliyesi", Value = "PerakendeSatisIrsaliyesi" });
            cmbCinsi.Items.Add(new ComboItem() { Text = "Toptan Satış İade İrsaliyesi", Value = "ToptanSatisIadeIrsaliyesi" });
            cmbCinsi.Items.Add(new ComboItem() { Text = "Perakende Satış İade İrsaliyesi", Value = "PerakendeSatisIadeIrsaliyesi" });
            cmbCinsi.Items.Add(new ComboItem() { Text = "Depo Sevk", Value = "GelenDepoSevk" });

            dteStart.Value = DateTime.Now;
            dteStop.Value = DateTime.Now;
            cmbCinsi.SelectedIndex = 0;
        }


        private void CreateList()
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                EvrakTipleri tip = (EvrakTipleri)Enum.Parse(typeof(EvrakTipleri), ((ComboItem)cmbCinsi.SelectedItem).Value.ToString(), true);
                string cari = txtUnvan.Text.Replace('*', '%');
                if (string.IsNullOrEmpty(cari))
                    cari = "%";
                using (Query q = new Query(ProgramTipleri.Mikro))
                {
                    byte[] dizi = BackOffice.Get.EvrakCins(tip);
                    q.Add(BackOffice.Get.SharEvrakList());
                    q.Add("@baslangic", SqlDbType.DateTime, new DateTime(dteStart.Value.Year, dteStart.Value.Month, dteStart.Value.Day));
                    q.Add("@bitis", SqlDbType.DateTime, new DateTime(dteStop.Value.Year, dteStop.Value.Month, dteStop.Value.Day, 23, 59, 59));
                    q.Add("@cari", SqlDbType.VarChar, cari);
                    q.Add("@tip", SqlDbType.TinyInt, dizi[0]);
                    q.Add("@cins", SqlDbType.TinyInt, dizi[1]);
                    q.Add("@ni", SqlDbType.TinyInt, dizi[2]);
                    q.Add("@evrTip", SqlDbType.TinyInt, dizi[3]);
                    var list = q.ToList(new { tarih = DateTime.Now, seri = "", sira = 0, unvan = "", gdepo = "", cdepo = "", ecins = "", hcins = "", htipi = "", norm = "", tip = byte.MinValue, cins = byte.MinValue, ni = byte.MinValue, etip = byte.MinValue, usr = 0 });
                    gridView1.SuspendLayout();
                    gridView1.DataSource = list;
                    gridView1.SetColumnStyles(list, new[] 
                                            { 
                                                new ColumnStyle("Tarih","tarih",50), 
                                                new ColumnStyle("Seri","seri", 50),
                                                new ColumnStyle("Sıra","sira", 50),
                                                new ColumnStyle("Cari Ünvanı","unvan", 150),
                                                new ColumnStyle("Giriş Depo","gdepo", 75),
                                                new ColumnStyle("Çıkış Depo","cdepo", 75),
                                                new ColumnStyle("Evrak Cinsi","ecins", 75),
                                                new ColumnStyle("Hareket Cinsi","hcins", 75),
                                                new ColumnStyle("Hareket Tipi","htipi", 75),
                                                new ColumnStyle("Normal/İade","norm", 75),
                                                new ColumnStyle("tip", -1),
                                                new ColumnStyle("cins", -1),
                                                new ColumnStyle("ni", -1),
                                                new ColumnStyle("etip", -1),
                                                new ColumnStyle("usr", -1),
                                            });
                    gridView1.ResumeLayout();
                    tabControl1.SelectedIndex = 1;
                }
            }
            catch (Exception ex)
            {
                ExceptionHandling.Hand(ex);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            CreateList();
        }

        private void btnSil_Click(object sender, EventArgs e)
        {
            DialogResult rs = MessageBox.Show("Silmek İstediğinize Eminmisiniz ?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
            if (rs == DialogResult.Yes)
            {
                if (gridView1.CurrentRowIndex > -1)
                {
                    bool islemyap = false;
                    int usr = Cevir.Parse<int>(gridView1[gridView1.CurrentRowIndex, 14]);
                    if (Program.Session[Settings.MikroKullanici].ToString() == usr.ToString()) //kendi evrağı
                    {
                        if (Program.Session[Settings.KendiEvrakDegistir].ToString() == "True")
                        {
                            islemyap = true;
                        }
                        else
                            MessageBox.Show("Kendi evrağını silme yetkisi bulunmamaktadır !");
                    }
                    else
                    {
                        if (Program.Session[Settings.BaskaEvrakDegistir].ToString() == "True")
                        {
                            islemyap = true;
                        }
                        else
                            MessageBox.Show("Başkasının evrağını silme yetkisi bulunmamaktadır !");
                    }
                    if (islemyap)
                    {
                        string seri = gridView1[gridView1.CurrentRowIndex, 1].ToString();
                        int sira = Cevir.Parse<int>(gridView1[gridView1.CurrentRowIndex, 2]);
                        byte tip = Cevir.Parse<byte>(gridView1[gridView1.CurrentRowIndex, 10]);
                        byte cins = Cevir.Parse<byte>(gridView1[gridView1.CurrentRowIndex, 11]);
                        byte norm = Cevir.Parse<byte>(gridView1[gridView1.CurrentRowIndex, 12]);
                        byte evrtip = Cevir.Parse<byte>(gridView1[gridView1.CurrentRowIndex, 13]);
                        BackOffice.Get.EvrakSil(EvrakTipleri.PerakendeAlisIrsaliyesi, seri, sira, tip, cins, norm, evrtip);
                        gridView1.RemoveRow(gridView1.CurrentRowIndex);
                    }
                }
            }
        }

        bool sipShow = false;
        private void button2_Click(object sender, EventArgs e)
        {
            if (!sipShow)
            {
                sipShow = true;
                Sip.Show();
            }
            else
            {
                sipShow = false;
                Sip.Hide();
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}